]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: Hide from picks during DND operations
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 21 Feb 2015 08:05:58 +0000 (09:05 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 27 Feb 2015 13:16:30 +0000 (14:16 +0100)
As it is impossible to interact with notification banners while a DND
operation is ongoing, we can temporarily hide the banner container from
picks so that DND works as expected even while a banner is showing.

https://bugzilla.gnome.org/show_bug.cgi?id=744912

js/ui/messageTray.js

index 84408f8291009088937ac8be6bde08434a32e564..f4b4f8876882ab84aaa55a28989dbf61aae1733e 100644 (file)
@@ -1555,6 +1555,25 @@ const MessageTray = new Lang.Class({
 
         Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
 
+        Main.overview.connect('window-drag-begin',
+                              Lang.bind(this, this._onDragBegin));
+        Main.overview.connect('window-drag-cancelled',
+                              Lang.bind(this, this._onDragEnd));
+        Main.overview.connect('window-drag-end',
+                              Lang.bind(this, this._onDragEnd));
+
+        Main.overview.connect('item-drag-begin',
+                              Lang.bind(this, this._onDragBegin));
+        Main.overview.connect('item-drag-cancelled',
+                              Lang.bind(this, this._onDragEnd));
+        Main.overview.connect('item-drag-end',
+                              Lang.bind(this, this._onDragEnd));
+
+        Main.xdndHandler.connect('drag-begin',
+                                 Lang.bind(this, this._onDragBegin));
+        Main.xdndHandler.connect('drag-end',
+                                 Lang.bind(this, this._onDragEnd));
+
         Main.wm.addKeybinding('focus-active-notification',
                               new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
                               Meta.KeyBindingFlags.NONE,
@@ -1571,6 +1590,14 @@ const MessageTray = new Lang.Class({
         this._updateState();
     },
 
+    _onDragBegin: function() {
+        Shell.util_set_hidden_from_pick(this.actor, true);
+    },
+
+    _onDragEnd: function() {
+        Shell.util_set_hidden_from_pick(this.actor, false);
+    },
+
     _onNotificationKeyRelease: function(actor, event) {
         if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
             this._expireNotification();